cmake_minimum_required(VERSION 3.7)
# project(projectname [CXX] [C] [JAVA]) 用这个指令定义工程名称,并可指定工程支持的语言,默认情况表示支持所有语言
# 这个指令隐式的定义了两个变量:  <projectname>_BINARY_DIR 和 <projectname>_SOURCE_DIR
# 但是同时也预定了PROJECT_BINARY_DIR 和 PROJECT_SOURCE_DIR变量，与上面两个变量的值一致(为了统一，以后都使用这两个变量)
project(CmakeDemo)

# 所以MESSAGE指令直接使用了这两个变量
message("This is BINARY dir" ${CmakeDemo_BINARY_DIR})
message("This is BINARY dir" ${PROJECT_BINARY_DIR}) # 以后都用这个
# message语法指令 :   (向终端输出用户定义的消息, 包含三种类型: SEND_ERROR 产生错误，生成过程被跳过 |
#                                                        STATUS 输出一条前缀为-的信息 | FATAL_ERROR 立即终止所有cmake进程)
# message([SEND_ERROR| STATUS| FATAL_ERROR] "message to display...")
message("This is SOURCE dir" ${CmakeDemo_SOURCE_DIR})
message("This is SOURCE dir" ${PROJECT_SOURCE_DIR}) # 以后都用这个

# SET语法: set(var [value] [CACHE TYPE DOCSTRING [FORCE]])
# set用来显式的设置变量值
set(CMAKE_CXX_STANDARD 14)

add_subdirectory(lib)
# set(SOURCE_FILES 多个文件)
set(SOURCE_FILES main.cpp)

# 加入新的，含有CMakeLists.txt的目录
# 这里是用来做共享库的


# 定义这个工程生成一个文件名为CmakeDemo的可执行文件
# 相关的源文件是SOURCE_FILES中定义的源文件列表
add_executable(CmakeDemo ${SOURCE_FILES} libmath.so)

# 基本语法规则:
# 1. 变量使用${}方式取值，但是在if控制语句中，是直接使用变量名
# 2. 指令(参数1 参数2)
#    参数使用括弧括起，参数之间使用空格或分号分开
#    以上面的add_executable为例，如果存在另外一个文件，就要写写成:
#    add_executable(CmakeDemo main.cpp student.cpp)
# 3.
